code: def _match(self, query):
          
          response = self._match_dialog(query)
          if response is not None:
              return response
  
          response = self._match_getters(query)
          if response is not None:
              return response
  
          response = self._match_registers(query)
          if response is not None:
              return response
  
          response = self._match_errors_queues(query)
          if response is not None:
              return response
  
          response = self._match_setters(query)
          if response is not None:
              return response
  
          if response is None:
              for channel in self._channels.values():
                  response = channel.match(query)
                  if response:
                      return response
  
          return None
docs: Tries to match in dialogues, getters and setters and subcomponents
  
          :param query: message tuple
          :type query: Tuple[bytes]
          :return: response if found or None
          :rtype: Tuple[bytes] | None