code: public Completable recoverOrInitializeState(final StateFormat format, final byte[] persistedState,
                                                final StreamFrom from, final StreamTo to) {
      if (persistedState == null || persistedState.length == 0) {
        return initializeState(from, to);
      } else {
        return recoverState(format, persistedState);
      }
    }
docs: Recovers or initializes the {@link SessionState}.
  <p>
  This method is a convience wrapper around initialization and recovery. It combines both methods and
  checks if the persisted state byte array is null or empty and if so it starts with the params given. If
  it is not empty it recovers from there. This acknowledges the fact that ideally the state is persisted
  somewhere but if its not there you want to start at a specific point in time.
  
  @param format the persistence format used.
  @param persistedState the state, may be null or empty.
  @param from from where to start streaming if persisted state is null or empty.
  @param to to where to stream if persisted state is null or empty.
  @return A {@link Completable} indicating the success or failure of the state recovery or init.