@jdm 
First way to solve this issue is changing LayoutPseudoNode as generic.
As long as LayoutPseudoNode is generic e.g) pub struct LayoutPseudoNode<T>
Then the struct which includes LayoutPseudoNode has to be generic.
e.g) LayoutDataWrapper has PrivateLayoutData has LayoutPseudoNode
Then all of those have to be generic. Not only I think that's not best way to do this, but also we have trouble to implement that.

Second, we tried to change priv node type to ~Reflectable and also remove all of  the code relate to AbstractNode and LayoutNode. But as long as we want to build flow( e.g build_flow_for_block), we need to create abstract node also layout node.

We don't know how to make LayoutPseudoNode to be generic to drop easily and also remove from_layout_pseudo in node.rs

Anyway, I addressed another comments about function name and arguments.
If you have any opinion, let us know more detail.
Thanks for answer.