I think that fact that the element is part of a form is significant, not in the sense that "this element is a descendant of an HTML `<form>` element". It's true that I cringe at all the special-case logic that would need to be included in a general `read` method, but I also think that it serves as a useful namespace for disambiguation: `read("name")` might mean "read the name of the Alarm form input field", but it could also mean, "read the name of [the first alarm / all alarms] in the Alarm list"