The more I look into how #WebComponents implicitly "constructs" existing elements on the page, the more I'm convinced it's a terrible idea. It's so weird and unintuitive to have an element which already exists, has data, and is being used by the page to *then* be "constructed" as a completely different object.
#JavaScript semantics weren't designed for this and you run into some super weird edge cases with field initializers, property descriptors, and (now) decorators.
I'm sure other approaches to this problem were equally bad, so I'm not blaming the spec authors here. Just observing that I've gone through a lot of pain and suffering which comes from this one root cause in particular.
This is going to be a real problem for #HydroActive, but I'm not sure it's fixable at this point in browsers. I think I'll likely have to design around it in some capacity. Maybe I'll do a blog post to articulate all these edge cases and challenges.