Used to search ``self.view`` when :meth:`adapt` is not given a widget
        name.

        *prop_name* is the name of a property in the model.

        Returns a string with the best match. Raises
        :class:`TooManyCandidatesError` or ``ValueError`` when nothing is
        found.

        Subclasses can customise this. No super call necessary. The default
        implementation converts *prop_name* to lower case and allows prefixes
        like ``entry_``.

def _find_widget_match(self, prop_name):
        """
        Used to search ``self.view`` when :meth:`adapt` is not given a widget
        name.

        *prop_name* is the name of a property in the model.

        Returns a string with the best match. Raises
        :class:`TooManyCandidatesError` or ``ValueError`` when nothing is
        found.

        Subclasses can customise this. No super call necessary. The default
        implementation converts *prop_name* to lower case and allows prefixes
        like ``entry_``.
        """
        names = []
        for wid_name in self.view:
            # if widget names ends with given property name: we skip
            # any prefix in widget name
            if wid_name.lower().endswith(prop_name.lower()):
                names.append(wid_name)

        if len(names) == 0:
            raise ValueError("No widget candidates match property '%s': %s" % \
                                 (prop_name, names))

        if len(names) > 1:
            raise TooManyCandidatesError("%d widget candidates match property '%s': %s" % \
                                             (len(names), prop_name, names))

        return names[0]