def METHOD_NAME(self, node):
    pair = ExchangePair(node.id)
    left = self.left if pair.left == "X" else pair.left
    right = self.right if pair.right == "X" else pair.right
    replaced_pair = ExchangePair(left, right)
    candidate = self.find_candidate(str(replaced_pair))
    if candidate == NO_RATE:
        return NO_RATE
    if self.depth == MAX_DEPTH:
        return NO_RATE
    transformer = ExchangeTransformer(self.expressions, left=left, right=right, depth=self.depth + 1, rates=self.rates)
    result = transformer.visit(candidate["expression"])
    self.exchanges.update(transformer.exchanges)
    return result