def METHOD_NAME(self, data):
    name = data.get("name")
    value = data.get("value")
    # Handle Keyword change
    if name == "Keyword":
        self.add_error_field("Keyword", self.validate_keyword(value))
    # Handle Methods Change
    elif name == "Methods":
        # Available Methods
        empty = [{"title": _("None"), "value": None}]
        # Get selected methods
        methods = map(api.get_object_by_uid, value)
        # Available instruments for the selected methods
        instruments = self.get_available_instruments_for(methods)
        # Available calculations for the selected methods
        calculations = self.get_available_calculations_for(methods)
        # Build select options
        m_opts = map(lambda o: dict(
            title=api.get_title(o), value=api.get_uid(o)), methods)
        i_opts = map(lambda o: dict(
            title=api.get_title(o), value=api.get_uid(o)), instruments)
        c_opts = map(lambda o: dict(
            title=api.get_title(o), value=api.get_uid(o)), calculations)
        # When methods are selected, we filter other fields accordingly
        if methods:
            # selected instruments
            i_sel = map(api.get_uid, instruments)
            # set update fields
            self.add_update_field("Method", {
                "options": empty + m_opts})
            self.add_update_field("Instruments_options", {
                "options": i_opts})
            self.add_update_field("Instruments:list", {
                "options": i_opts, "selected": i_sel})
            self.add_update_field("Instrument", {
                "options": empty + i_opts})
            self.add_update_field("Calculation", {
                "options": empty + c_opts})
        else:
            self.add_update_field("Method", {
                "options": empty})
            self.add_update_field("Instruments:list", {
                "options": []})
            self.add_update_field("Instruments_options", {
                "options": i_opts})
            self.add_update_field("Instrument", {
                "options": empty})
            self.add_update_field("Calculation", {
                "options": empty + c_opts})
    # Handle Instruments Change
    elif name == "Instruments":
        instruments = map(api.get_object_by_uid, value)
        empty = [{"title": _("None"), "value": None}]
        i_opts = map(lambda o: dict(
            title=api.get_title(o), value=api.get_uid(o)), instruments)
        self.add_update_field("Instrument", {
            "options": empty + i_opts})
    return self.data