text:   var hasProp = {}.hasOwnProperty,
        slice = Array.prototype.slice;
  
    var inherits = Rx.internals.inherits = function (child, parent) {
      function __() { this.constructor = child; }
      __.prototype = parent.prototype;
      child.prototype = new __();
    };
  
    var addProperties = Rx.internals.addProperties = function (obj) {
      for(var sources = [], i = 1, len = arguments.length; i < len; i++) { sources.push(arguments[i]); }
      for (var idx = 0, ln = sources.length; idx < ln; idx++) {
        var source = sources[idx];
        for (var prop in source) {
          obj[prop] = source[prop];
        }
      }
    };
  
    // Rx Utils
    var addRef = Rx.internals.addRef = function (xs, r) {
      return new AnonymousObservable(function (observer) {
        return new BinaryDisposable(r.getDisposable(), xs.subscribe(observer));
      });
    };
  
    function arrayInitialize(count, factory) {
      var a = new Array(count);
      for (var i = 0; i < count; i++) {
        a[i] = factory();
      }
      return a;
    }
  