docs: def check_incoming(self, message, addr, protocol):
          """
          Handle a succesful incoming check.
          """
          component = protocol.local_candidate.component
  
          # find remote candidate
          remote_candidate = None
          for c in self._remote_candidates:
              if c.host == addr[0] and c.port == addr[1]:
                  remote_candidate = c
                  assert remote_candidate.component == component
                  break
          if remote_candidate is None:
              # 7.2.1.3. Learning Peer Reflexive Candidates
              remote_candidate = Candidate(
                  foundation=random_string(10),
                  component=component,
                  transport='udp',
                  priority=message.attributes['PRIORITY'],
                  host=addr[0],
                  port=addr[1],
                  type='prflx')
              self._remote_candidates.append(remote_candidate)
              self.__log_info('Discovered peer reflexive candidate %s', remote_candidate)
  
          # find pair
          pair = self._find_pair(protocol, remote_candidate)
          if pair is None:
              pair = CandidatePair(protocol, remote_candidate)
              pair.state = CandidatePair.State.WAITING
              self._check_list.append(pair)
              self.sort_check_list()
  
          # triggered check
          if pair.state in [CandidatePair.State.WAITING, CandidatePair.State.FAILED]:
              pair.handle = asyncio.ensure_future(self.check_start(pair))
  
          # 7.2.1.5. Updating the Nominated Flag
          if 'USE-CANDIDATE' in message.attributes and not self.ice_controlling:
              pair.remote_nominated = True
  
              if pair.state == CandidatePair.State.SUCCEEDED:
                  pair.nominated = True
                  self.check_complete(pair)