If you define an invoice method on a class, you have no way of knowing that some other user of that class won't define a different, incompatiblemethod also named invoice.
Unfortunately, it is incompatible because at the metadata level every method on every interface has its own slot (which makes explicit interface implementations work).