code: protected boolean setResult(@Nullable T value, boolean isLast) {
      boolean result = setResultInternal(value, isLast);
      if (result) {
        notifyDataSubscribers();
      }
      return result;
    }
docs: Subclasses should invoke this method to set the result to {@code value}.
  
  <p> This method will return {@code true} if the value was successfully set, or
  {@code false} if the data source has already been set, failed or closed.
  
  <p> If the value was successfully set and {@code isLast} is {@code true}, state of the
  data source will be set to {@link AbstractDataSource.DataSourceStatus#SUCCESS}.
  
  <p> {@link #closeResult} will be called for the previous result if the new value was
  successfully set, OR for the new result otherwise.
  
  <p> This will also notify the subscribers if the value was successfully set.
  
  <p> Do NOT call this method from a synchronized block as it invokes external code of the
  subscribers.
  
  @param value the value that was the result of the task.
  @param isLast whether or not the value is last.
  @return true if the value was successfully set.