diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index cb5ee37..ead4c88 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,15 @@
+2019-10-14  Truitt Savell  <tsavell@apple.com>
+
+        Unreviewed, rolling out r251045.
+
+        Broke internal builds
+
+        Reverted changeset:
+
+        "AX: Make AXIsolatedTree compile again"
+        https://bugs.webkit.org/show_bug.cgi?id=202702
+        https://trac.webkit.org/changeset/251045
+
 2019-10-14  youenn fablet  <youenn@apple.com>
 
         Reuse existing web processes for running service workers
diff --git a/Source/WebCore/accessibility/AXObjectCache.cpp b/Source/WebCore/accessibility/AXObjectCache.cpp
index aae4d86..e0bbda2 100644
--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ b/Source/WebCore/accessibility/AXObjectCache.cpp
@@ -730,10 +730,8 @@
 
     m_idsInUse.remove(axID);
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
-    if (auto pageID = m_document.pageID()) {
-        if (auto tree = AXIsolatedTree::treeForPageID(*pageID))
-            tree->removeNode(axID);
-    }
+    if (auto pageID = m_document.pageID())
+        AXIsolatedTree::treeForPageID(*pageID)->removeNode(axID);
 #endif
 
     ASSERT(m_objects.size() >= m_idsInUse.size());
@@ -2948,7 +2946,6 @@
     auto isolatedTreeNode = AXIsolatedTreeNode::create(object);
     nodeChanges.append(isolatedTreeNode.copyRef());
 
-    isolatedTreeNode->setTreeIdentifier(tree.treeIdentifier());
     isolatedTreeNode->setParent(parentID);
     associateIsolatedTreeNode(object, isolatedTreeNode, tree.treeIdentifier());
 
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
index 586adf0..0e7d542 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
@@ -42,9 +42,9 @@
     return ++s_currentTreeID;
 }
 
-HashMap<PageIdentifier, Ref<AXIsolatedTree>>& AXIsolatedTree::treePageCache()
+HashMap<uint64_t, Ref<AXIsolatedTree>>& AXIsolatedTree::treePageCache()
 {
-    static NeverDestroyed<HashMap<PageIdentifier, Ref<AXIsolatedTree>>> map;
+    static NeverDestroyed<HashMap<uint64_t, Ref<AXIsolatedTree>>> map;
     return map;
 }
 
@@ -67,6 +67,16 @@
     return adoptRef(*new AXIsolatedTree());
 }
 
+Ref<AXIsolatedTree> AXIsolatedTree::initializePageTreeForID(PageIdentifier pageID, AXObjectCache& cache)
+{
+    RELEASE_ASSERT(isMainThread());
+    auto tree = cache->generateIsolatedAccessibilityTree();
+    tree->setInitialRequestInProgress(true);
+    tree->applyPendingChanges();
+    tree->setInitialRequestInProgress(false);
+    return tree;
+}
+
 RefPtr<AXIsolatedTreeNode> AXIsolatedTree::nodeInTreeForID(AXIsolatedTreeID treeID, AXID axID)
 {
     return treeForID(treeID)->nodeForID(axID);
@@ -99,6 +109,7 @@
 
 RefPtr<AXIsolatedTreeNode> AXIsolatedTree::nodeForID(AXID axID) const
 {
+    RELEASE_ASSERT(!isMainThread() || initialRequest);
     if (!axID)
         return nullptr;
     return m_readerThreadNodeMap.get(axID);
@@ -139,9 +150,14 @@
         m_pendingAppends.append(node.copyRef());
 }
 
+void AXIsolatedTree::setInitialRequestInProgress(bool initialRequestInProgress)
+{
+    m_initialRequestInProgress = initialRequestInProgress;
+}
+
 void AXIsolatedTree::applyPendingChanges()
 {
-    RELEASE_ASSERT(!isMainThread());
+    RELEASE_ASSERT(!isMainThread() || initialRequest);
     LockHolder locker { m_changeLogLock };
     Vector<Ref<AXIsolatedTreeNode>> appendCopy;
     std::swap(appendCopy, m_pendingAppends);
@@ -153,8 +169,10 @@
     m_rootNodeID = m_pendingRootNodeID;
     m_focusedNodeID = m_pendingFocusedNodeID;
     
-    for (auto& item : appendCopy)
+    for (auto& item : appendCopy) {
+        item->setTreeIdentifier(m_treeID);
         m_readerThreadNodeMap.add(item->identifier(), WTFMove(item));
+    }
 
     for (auto item : removeCopy)
         m_readerThreadNodeMap.remove(item);
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
index 6abd783..6eec264 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
@@ -37,14 +37,15 @@
 
 class Page;
 
-class AXIsolatedTree : public ThreadSafeRefCounted<AXIsolatedTree> {
+class AXIsolatedTree : public ThreadSafeRefCounted<AXIsolatedTree>, public CanMakeWeakPtr<AXIsolatedTree> {
     WTF_MAKE_NONCOPYABLE(AXIsolatedTree); WTF_MAKE_FAST_ALLOCATED;
 
 public:
     static Ref<AXIsolatedTree> create();
     virtual ~AXIsolatedTree();
 
-    WEBCORE_EXPORT static Ref<AXIsolatedTree> createTreeForPageID(PageIdentifier);
+    static Ref<AXIsolatedTree> createTreeForPageID(PageIdentifier);
+    WEBCORE_EXPORT static Ref<AXIsolatedTree> initializePageTreeForID(PageIdentifier, AXObjectCache&);
     WEBCORE_EXPORT static RefPtr<AXIsolatedTree> treeForPageID(PageIdentifier);
     WEBCORE_EXPORT static RefPtr<AXIsolatedTree> treeForID(AXIsolatedTreeID);
 
@@ -63,6 +64,7 @@
     // Call on AX thread
     WEBCORE_EXPORT void applyPendingChanges();
 
+    WEBCORE_EXPORT void setInitialRequestInProgress(bool);
     AXIsolatedTreeID treeIdentifier() const { return m_treeID; }
 
 private:
@@ -84,6 +86,7 @@
     AXIsolatedTreeID m_treeID;
     AXID m_rootNodeID { InvalidAXID };
     AXID m_focusedNodeID { InvalidAXID };
+    bool m_initialRequestInProgress;
 };
 
 } // namespace WebCore
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
index d8dbb9f..e2ef412 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
@@ -95,7 +95,7 @@
 {
     m_treeIdentifier = treeIdentifier;
     if (auto tree = AXIsolatedTree::treeForID(m_treeIdentifier))
-        m_cachedTree = tree;
+        m_cachedTree = makeWeakPtr(tree.get());
 }
 
 AccessibilityObjectInterface* AXIsolatedTreeNode::focusedUIElement() const
@@ -132,7 +132,7 @@
 {
     auto value = m_attributeMap.get(propertyName);
     return WTF::switchOn(value,
-        [&] (Optional<FloatRect> typedValue) {
+        [&zeroRect] (Optional<FloatRect> typedValue) {
             if (!typedValue)
                 return FloatRect { };
             return typedValue.value();
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
index 934d63f..4374535 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
@@ -45,7 +45,7 @@
 class AXIsolatedTree;
 class AccessibilityObject;
 
-class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted<AXIsolatedTreeNode> {
+class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted<AXIsolatedTreeNode>, public CanMakeWeakPtr<AXIsolatedTreeNode> {
 
 public:
     enum class AXPropertyName : uint8_t {
@@ -131,7 +131,7 @@
     AXID m_identifier;
     bool m_initialized { false };
     AXIsolatedTreeID m_treeIdentifier;
-    RefPtr<AXIsolatedTree> m_cachedTree;
+    WeakPtr<AXIsolatedTree> m_cachedTree;
     Vector<AXID> m_children;
 
 #if PLATFORM(COCOA)
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
index daf34f1..b53b4ae 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
@@ -280,7 +280,7 @@
 {
     NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:children.size()];
     for (auto& child : children)
-        addChildToArray(*child, result);
+        addChildToArray(*child, result)
     return [result autorelease];
 }
 #endif
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
index 0150fca..cb222b4 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
@@ -2023,7 +2023,7 @@
         children.reserveInitialCapacity(nodeChildren.size());
         auto tree = treeNode->tree();
         for (auto childID : nodeChildren)
-            children.uncheckedAppend(tree->nodeForID(childID));
+            children.uncheckedAppend(tree->nodeForID(child));
         return convertToNSArray(children);
     }
 #endif
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 142a709..6c0c6d2 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2019-10-14  Truitt Savell  <tsavell@apple.com>
+
+        Unreviewed, rolling out r251045.
+
+        Broke internal builds
+
+        Reverted changeset:
+
+        "AX: Make AXIsolatedTree compile again"
+        https://bugs.webkit.org/show_bug.cgi?id=202702
+        https://trac.webkit.org/changeset/251045
+
 2019-10-14  youenn fablet  <youenn@apple.com>
 
         Reuse existing web processes for running service workers
diff --git a/Source/WebKit/Configurations/BaseTarget.xcconfig b/Source/WebKit/Configurations/BaseTarget.xcconfig
index 60da40c..6f28f77 100644
--- a/Source/WebKit/Configurations/BaseTarget.xcconfig
+++ b/Source/WebKit/Configurations/BaseTarget.xcconfig
@@ -33,7 +33,7 @@
 FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_base);
 FRAMEWORK_SEARCH_PATHS[sdk=iphone*] = $(FRAMEWORK_SEARCH_PATHS_base) $(WK_PRIVATE_FRAMEWORKS_DIR);
 
-SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/A/Frameworks;
+SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks;
 
 GCC_PREFIX_HEADER = WebKit2Prefix.h;
 GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(FEATURE_DEFINES) $(WK_CORE_PREDICTION_DEFINES) U_HIDE_DEPRECATED_API U_DISABLE_RENAMING=1 U_SHOW_CPLUSPLUS_API=0 FRAMEWORK_NAME=WebKit;
diff --git a/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm b/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
index d0d5657..4273db5 100644
--- a/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
+++ b/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
@@ -26,7 +26,6 @@
 #import "config.h"
 #import "WKAccessibilityWebPageObjectBase.h"
 
-#import "AccessibilityPrivSPI.h"
 #import "WebFrame.h"
 #import "WebPage.h"
 #import "WKArray.h"
@@ -97,7 +96,7 @@
 {
     if (isMainThread()) {
         if (auto cache = [self axObjectCache]) {
-            auto tree = cache->generateIsolatedAccessibilityTree();
+            auto tree = AXIsolatedTree::initializeTreeForPageId(m_pageID, *cache);
 
             // Now that we have created our tree, initialize the secondary thread,
             // so future requests come in on the other thread.
@@ -106,7 +105,7 @@
                 return rootNode->wrapper();
         }
     } else {
-        auto tree = WebCore::AXIsolatedTree::treeForPageID(m_pageID);
+        auto tree = AXIsolatedTree::treeForPageID(m_pageID);
         tree->applyPendingChanges();
         if (auto rootNode = tree->rootNode())
             return rootNode->wrapper();
