code: public final Observable<Long> averageLong(Func1<? super T, Long> valueExtractor) {
          return o.lift(new OperatorAverageLong<T>(valueExtractor));
      }
docs: Returns an Observable that transforms items emitted by the source Observable into Longs by using a
  function you provide and then emits the Long average of the complete sequence of transformed values.
  <p>
  <img width="640" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/average.f.png" alt="">
  
  @param valueExtractor
  the function to transform an item emitted by the source Observable into a Long
  @return an Observable that emits a single item: the Long average of the complete sequence of items
  emitted by the source Observable when transformed into Longs by the specified function
  @see <a href="https://github.com/ReactiveX/RxJava/wiki/Mathematical-and-Aggregate-Operators#wiki-averageinteger-averagelong-averagefloat-and-averagedouble">RxJava Wiki: averageLong()</a>
  @see <a href="http://msdn.microsoft.com/en-us/library/system.reactive.linq.observable.average.aspx">MSDN: Observable.Average</a>