I'd expect that `satisfies?` works even when providing protocol implementation via metadata, however that doesn't seem to be the case:
Would it be better to put the metadata check second instead of first for perf? Or is it actually faster?
in the case of external or direct extensions there are single categoric things we can check to answer the question of satisfies? (either an entry in the protocol data or instanceof Java checks). with metadata extension, you have to look up the protocol methods and check whether one? all? are present in the metadata, and you need to do this check before external extensions, so it has a potentially large performance cost to add this check (which is an existing separate issue)
in general, leaning on satisfies? too much is usually a smell - you should instead be leaning on protocol polymorphism to handle conditional cases