code: public static <TResult> Observable<TResult> observeAndFlatten(final Block<SingleResultCallback<List<TResult>>> operation) {
          return new Observable<TResult>() {
              @Override
              public void subscribe(final Observer<? super TResult> observer) {
                  new FlatteningSingleResultCallbackSubscription<TResult>(operation, observer);
              }
          };
      }
docs: Allows the conversion of {@link SingleResultCallback} based operations and flattens the results in an {@link Observable}.
  
  <p>Requires a {@link Block} that is passed the callback to be used with the operation.
  This is required to make sure that the operation only occurs once the {@link Subscription} signals for data.</p>
  
  @param operation the operation that is passed a callback and is used to delay execution of an operation until demanded.
  @param <TResult> The type of result being observed
  @return a subscription