'Return all labels (Label instances) for this item.
For items that represent radio buttons or checkboxes, if the item was
surrounded by a <label> tag, that will be the first label; all other
labels, connected by \'for\' and \'id\', are in the order that appear in
the HTML.
For items that represent select options, if the option had a label
attribute, that will be the first label.  If the option has contents
(text within the option tags) and it is not the same as the label
attribute (if any), that will be a label.  There is nothing in the
spec to my knowledge that makes an option with an id unable to be the
target of a label\'s for attribute, so those are included, if any, for
the sake of consistency and completeness.'

def get_labels(self):

    res = []
    res.extend(self._labels)
    if self.id:
        res.extend(self._control._form._id_to_labels.get(self.id, ()))
    return res
