1. A computer-implemented method for programmatically manipulating a user interface element, the method comprising: automatically determining from the element whether the element supports a control pattern by: receiving a query, from a screen reader automation utility, requesting a control pattern supported by the element; in response to receiving a query requesting a control pattern, determining a control pattern supported by the element, the element being of a particular element type, the control pattern describing basic functionality exposed by a plurality of types of elements that corresponds to methods supported by the element; returning an interface that includes the methods associated with the control pattern supported by the element to the screen reader automation utility; using the screen reader automation utility programmatically manipulate the element based on the control pattern without reference to the element's type by using at least one of the methods that enable functionality associated with the control pattern exposed by the element; requesting from the element a plurality of properties that can be used by the screen reader automation utility to gather information deemed to be important to a user, the plurality of properties including human-readable text that refers to an attribute of the element, wherein the attribute of the element comprises information about the element that, if conveyed to the user, informs the user about the element; and verbally conveying the information to the user.