Trait to abstract access to layout data across various data structures.
A wrapper so that layout can access only the methods that it should have access to. Layout must only ever see these and must never see instances of
Send + Syncis required here for Layout 2020, but eventually it should stop sending LayoutNodes to other threads and rely on ThreadSafeLayoutNode or some other mechanism to ensure thread safety.
A thread-safe version of
LayoutNode, used during flow construction. This type of layout node does not allow any parents or siblings of nodes to be accessed, to avoid races.