code: public static <T1, R> Plan0<R> then(/* this */Observable<T1> source, Func1<T1, R> selector) {
          if (source == null) {
              throw new NullPointerException("source");
          }
          if (selector == null) {
              throw new NullPointerException("selector");
          }
          return new Pattern1<T1>(source).then(selector);
      }
docs: Matches when the observable sequence has an available element and projects the element by invoking the selector function.