code: public <R> Plan0<R> then(Func5<T1, T2, T3, T4, T5, R> selector) {
          if (selector == null) {
              throw new NullPointerException();
          }
          return new Plan5<T1, T2, T3, T4, T5, R>(this, selector);
      }
docs: Matches when all observable sequences have an available
  element and projects the elements by invoking the selector function.
  
  @param selector
  the function that will be invoked for elements in the source sequences.
  @return the plan for the matching
  @throws NullPointerException
  if selector is null