code: @CallSuper
      public void registerDataObserver(@NonNull DataObserver dataObserver) {
          checkNotNull(dataObserver, "dataObserver");
          mDataObservable.registerObserver(dataObserver);
          if (mDataObservable.getObserverCount() == 1) {
              onFirstObserverRegistered();
          }
      }
docs: Registers an observer with this adapter, to be notified of data set changes.
  <p>
  A {@link PowerAdapter} is only required to publish items once at least one observer is registered. Therefore
  clients should always register an observer before accessing the contents of the adapter.
  <p>
  Note that it is an error to register the same observer twice, and doing so may result in an
  {@link IllegalStateException}.
  @param dataObserver The observer to be registered.