DelegatingModelControllerClient.DelegateProvider.getDelegate should be javadoced as throwing ISE if the delegate is not available, which is what one of the two impls does. (With the other the impl is always available.) DelegatingModelControllerClient.close() can then catch and ignore the ISE when it calls getDelegate(). The ISE means there's no delegate to close which means 'close' succeeded.
This is just a minor improvement when using the WildFly Core Test Runner where a failure calling Server.start is leading to log noise when Server tries to close any ManagementClient. The ISE gets thrown because no client was ever started, and the ISE gets logged to no benefit, distracting from the logging of the real problem, the failure to start.