When attach() is called, currently we cannot know how attach() is called. This is causing the following problems. (1) In shadow tree, we have to decide: 'we have to re-construct whole shadow tree' or 'just constructing the attached subtree suffices'. (2) Though we have to know the visual parent of the attached element in InsertionPoint, we calculate them on-the-fly. (3) Some contextual flags are distributed in several elements, and referring them in attach(). If attach() is called with some context, these problem would be able to be solved.
This attempt failed... Let's make this invalid for now. If you don't think so, feel free to reopen.