This is a raw-pointer comparison.  The function will throw if the compositions aren't exactly the same pointer.  Is that the behavior we want?