--- Entering scope --- Entering scope --- Leaving scope containing Adding type T Adding function q --- Entering scope --- Leaving scope containing --- Leaving scope containing T Adding context has_q Adding function f --- Entering scope --- Entering scope --- Leaving scope containing Adding type z Adding function ?=? --- Entering scope --- Leaving scope containing --- Entering scope --- Entering scope --- Entering scope --- Leaving scope containing Adding type T --- Entering scope --- Leaving scope containing Adding type U Adding function r --- Entering scope --- Leaving scope containing --- Leaving scope containing T U Adding context has_r --- Entering scope --- Leaving scope containing Adding type x --- Entering scope --- Leaving scope containing Adding type y --- Leaving scope containing x y has_r --- Leaving scope containing z