This reminds me of the comment someone made once about the naming convention in C++ and maybe Java of, say, Foo for the pure virtual type and FooImpl for the concrete type. They pointed out that having a Foo pure virtual type suggests that there will be more than one concrete type conforming.
Because why bother defining a protocol if only one thing cares?