code: def eliminate(self, node, data):
          
  
          # Cache resolved value
          self.eliminated[node] = data
          others = self.checks[node]
          del self.checks[node]
  
          # Pass messages to all associated checks
          for check in others:
              check.check ^= data
              check.src_nodes.remove(node)
  
              # Yield all nodes that can now be resolved
              if len(check.src_nodes) == 1:
                  yield (next(iter(check.src_nodes)), check.check)
docs: Resolves a source node, passing the message to all associated checks