class MastodonPost extends Post<MastodonInstance> implements CommentablePost, DiscoverablePost, MentionablePost, ReactablePost, ReportablePost, ShareablePost {}
class PleromaPost extends Post<PleromaInstance> implements CommentablePost, DiscoverablePost, MentionablePost, ReportablePost, RichReactablePost, ShareablePost {}
interface RichReactablePost extends ReactablePost {} // supporting custom reactions other than "likes"
By defining classes this way, app developers can check for an unknown Post-based object's ability to be mentioned (reposted/renoted) by checking if the given class implements the MentionablePost interface, then calling the inherited method to check for support.
And without having to check the instance the Post originally came from, app developers can check for specific support like Custom Reactions by checking if the object implements the RichReactablePost interface. Which unfortunately, Mastodon does not supports it.