docs: function define(type, baseClass, members, statics) {
      // empty constructor
      type.prototype = baseClass ? typeof baseClass === "function" ? new baseClass() : baseClass : new Class(); // set base object as prototype
      type.prototype.constructor = type;
      type.prototype = apply(type.prototype, members || {});
      return apply(type, statics || {}); // return empty object with right [[Prototype]]
  }