code: def _extract_and_handle_mpbgp_withdraws(self, mp_unreach_attr):
          
          msg_rf = mp_unreach_attr.route_family
          # Check if this route family is among supported route families.
          if msg_rf not in SUPPORTED_GLOBAL_RF:
              LOG.info(
                  'Received route family %s is not supported. '
                  'Ignoring withdraw routes on this UPDATE message.',
                  msg_rf)
              return
  
          w_nlris = mp_unreach_attr.withdrawn_routes
          if not w_nlris:
              # If this is EOR of some kind, handle it
              self._handle_eor(msg_rf)
  
          for w_nlri in w_nlris:
              w_path = bgp_utils.create_path(
                  self,
                  w_nlri,
                  is_withdraw=True
              )
              block, blocked_cause = self._apply_in_filter(w_path)
  
              received_route = ReceivedRoute(w_path, self, block)
              nlri_str = w_nlri.formatted_nlri_str
  
              if nlri_str in self._adj_rib_in:
                  del self._adj_rib_in[nlri_str]
                  self._signal_bus.adj_rib_in_changed(self, received_route)
  
              if not block:
                  # Update appropriate table with withdraws.
                  tm = self._core_service.table_manager
                  tm.learn_path(w_path)
              else:
                  LOG.debug('prefix : %s is blocked by in-bound filter: %s',
                            w_nlri, blocked_cause)
docs: Extracts withdraws advertised in the given update message's
           *MpUnReachNlri* attribute.
  
          Assumes MPBGP capability is enabled.
          Parameters:
              - update_msg: (Update) is assumed to be checked for all bgp
              message errors.
  
          Extracted withdraws are added to appropriate *Destination* for further
          processing.