Record checks and, if needed, records a new entry for (got,
expected) couple. It returns true if got & expected are pointers
and have already been seen together. It returns false otherwise.
It is the caller responsibility to check that got and expected
types are the same.