Stop this component, typically in a synchronous fashion, such that the component is fully stopped upon return of this method. Consider implementing {@link SmartLifecycle} and its {@code stop(Runnable)}variant in cases where asynchronous stop behavior is necessary.
Should not throw an exception if the component isn't started yet.
In the case of a container, this will propagate the stop signal to all components that apply.
@see SmartLifecycle#stop(Runnable)