function Order(options) {
    this.random = 'random' in options ? options.random : true;
    var seed = (this.seed = options.seed || generateSeed());
    this.sort = this.random ? randomOrder : naturalOrder;

    function naturalOrder(items) {
      return items;
    }

    function randomOrder(items) {
      var copy = items.slice();
      copy.sort(function(a, b) {
        return jenkinsHash(seed + a.id) - jenkinsHash(seed + b.id);
      });
      return copy;
    }

    function generateSeed() {
      return String(Math.random()).slice(-5);
    }

    // Bob Jenkins One-at-a-Time Hash algorithm is a non-cryptographic hash function
    // used to get a different output when the key changes slightly.
    // We use your return to sort the children randomly in a consistent way when
    // used in conjunction with a seed

    function jenkinsHash(key) {
      var hash, i;
      for (hash = i = 0; i < key.length; ++i) {
        hash += key.charCodeAt(i);
        hash += hash << 10;
        hash ^= hash >> 6;
      }
      hash += hash << 3;
      hash ^= hash >> 11;
      hash += hash << 15;
      return hash;
    }
  }
@typedef SpecResult
@property {Int} id - The unique id of this spec.
@property {String} description - The description passed to the {@link it} that created this spec.
@property {String} fullName - The full description including all ancestors of this spec.
@property {Expectation[]} failedExpectations - The list of expectations that failed during execution of this spec.
@property {Expectation[]} passedExpectations - The list of expectations that passed during execution of this spec.
@property {Expectation[]} deprecationWarnings - The list of deprecation warnings that occurred during execution this spec.
@property {String} pendingReason - If the spec is {@link pending}, this will be the reason.
@property {String} status - Once the spec has completed, this string represents the pass/fail status of this spec.
@property {number} duration - The time in ms used by the spec execution, including any before/afterEach.