Thanks for the clarification.
Now I'm finding something has changed with the optimizeForSparseGraphs lookup table. I'm using AddToLookup(node), aka lookupTree.Add(node) and I've confirmed that each node added is a separate instance.
When I use the nodes in the lookup tree to start making connections, I get the candidateNodes with lookupTree.GetInRange(nodePosition, sqrdMaxDistance, buffer) which fills the empty buffer I provide. However, every candidateNode that is returned in the buffer is the same node instance as the node whose position was used for nodePosition. Since every candidateNode for a connection is the same instance as the node I want to connect to, no connection is made.
This worked in my previous 3.8.6 implementation, but something seems to have changed in the lookup tree.