text:   function observableOf (scheduler, array) {
      var len = array.length;
      isScheduler(scheduler) || (scheduler = currentThreadScheduler);
      return new AnonymousObservable(function (observer) {
        return scheduler.scheduleRecursiveWithState(0, function (i, self) {
          if (i < len) {
            observer.onNext(array[i]);
            self(i + 1);
          } else {
            observer.onCompleted();
          }
        });
      });
    }
  
    /**
     *  This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
     * @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
     */
    Observable.of = function () {
      var len = arguments.length, args = new Array(len);
      for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
      return observableOf(null, args);
    };
  
    /**
     *  This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
     * @param {Scheduler} scheduler A scheduler to use for scheduling the arguments.
     * @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
     */
    Observable.ofWithScheduler = function (scheduler) {
      var len = arguments.length, args = new Array(len - 1);
      for(var i = 0; i < len - 1; i++) { args[i] = arguments[i + 1]; }
      return observableOf(scheduler, args);
    };
  