Persists the specified Subject's state for later access. If there is a no existing state persisted, this
persists it if possible (i.e. a create operation). If there is existing state for the specified {@code Subject},
this method updates the existing state to reflect the current state (i.e. an update operation).
@param subject the Subject instance for which its state will be created or updated.
@return the Subject instance to use after persistence is complete. This can be the same as the method argument
if the underlying implementation does not need to make any Subject changes.
Persists the specified Subject's state for later access. If there is a no existing state persisted, this persists it if possible (i.e. a create operation). If there is existing state for the specified {@code Subject}, this method updates the existing state to reflect the current state (i.e. an update operation).
@param subject the Subject instance for which its state will be created or updated. @return the Subject instance to use after persistence is complete. This can be the same as the method argument if the underlying implementation does not need to make any Subject changes.