':param get_option: A callable that takes one argument: the option name
and returns the corresponding OptionRecommendation.
:param get_help: A callable that takes the option name and return a help
string.'

def initialize_options(self, get_option, get_help, db=None, book_id=None):

    defaults = load_defaults(self._name)
    defaults.merge_recommendations(get_option, OptionRecommendation.LOW, self._options)
    if (db is not None):
        specifics = load_specifics(db, book_id)
        specifics.merge_recommendations(get_option, OptionRecommendation.HIGH, self._options, only_existing=True)
        defaults.update(specifics)
    self.apply_recommendations(defaults)
    self.setup_help(get_help)
    def process_child(child):
        for g in child.children():
            if isinstance(g, QLabel):
                buddy = g.buddy()
                if ((buddy is not None) and hasattr(buddy, '_help')):
                    g._help = buddy._help
                    htext = unicode(buddy.toolTip()).strip()
                    g.setToolTip(htext)
                    g.setWhatsThis(htext)
                    g.__class__.enterEvent = (lambda obj, event: self.set_help(getattr(obj, '_help', obj.toolTip())))
            else:
                process_child(g)
    process_child(self)
