What I had in mind is somewhat like `java.nio.channels.spi.*`: sure, some people will implement it, but the vast majority will just use readily made implementations coming with the JDK or other libraries.

When I wrote the above, I had not yet scrolled down to see that you moved things out of the `spi` package, which makes sense if we assume that we will never add any real end-user API, because then we would mix up different target audiences in the same package (and the NIO example shows that there is precedent in the JDK for keeping these things separate). I’m fine with that, but we should be clear about this decision. In this case the question of API vs SPI becomes purely one of how we talk about it in the documentation, to clarify the intent.