I know it is a lot, but most of the changes are really just using InternalServiceClientFactory instead of ServiceClientFactory.
No we have to sets of interfaces for servcies: InternalService Service
Service contains public methods InternalService extends Serivce and contains public methods too, as the name is self-explanatory it should be only used for internal use.
Providers implements InternalService but are package-private so cannot be imported outside of the package.
The only possibility to have the instance of InternalService or Service is through factories: InternalServiceClientFactory ServiceClientFactory