Modules example.com/internalcompat/{a,b} are copies. One could be a fork
of the other. An external package p exposes a type from a package q
within the same module.

gorelease should not report differences between these packages. The types
are distinct, but they correspond (in apidiff terminology), which is the
important property when considering differences between modules.

There are three use cases to consider:

1. One module substitutes for the other via a `replace` directive.
   Only the replacement module is used, and the package paths are effectively
   identical, so the types are not distinct.
2. One module subsititutes for the other by rewriting `import` statements
   globally. All references to the original type become references to the
   new type, so there is no conflict.
3. One module substitutes for the other by rewriting some `import` statements
   but not others (for example, those within a specific consumer package).
   In this case, the types are distinct, and even if there are no changes,
   the types are not compatible.
