I see the misunderstanding now, thanks. I think "The behavior is undefined." is confusing as it looks like applied to this method, but saying that you'll release all services is very clear actually. I see now that the two of you are referring to the ServiceManager behaviour, specifically what happens to further invocations to _requestService_.

It would have that throw an exception, a simple and clear _IllegalStateException_.

That said, we might want to specify that invoking any operation on a _Service_ instance which you might still have a reference to, that's undefined as it depends on the service implementation: it might implement a defensive mechanism, or it might not.