code: public final static <R> JoinObservable<R> when(Plan0<R>... plans) {
          return from(Observable.create(OperatorJoinPatterns.when(plans)));
      }
docs: Joins together the results from several patterns via their plans.
  <p>
  <img width="640" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/and_then_when.png" alt="">
  
  @param plans
  a series of plans created by use of the {@link #then} Observer on patterns
  @return an Observable that emits the results from matching several patterns
  @throws NullPointerException
  if {@code plans} is null
  @see <a href="https://github.com/ReactiveX/RxJava/wiki/Combining-Observables#wiki-and-then-and-when">RxJava Wiki: when()</a>
  @see <a href="http://msdn.microsoft.com/en-us/library/hh229889.aspx">MSDN: Observable.When</a>