getCleanClone = (object, realm) => {
    if (!object.constructor) {
      return create(null);
    } // eslint-disable-next-line no-proto


    const prototype = object.__proto__ || getPrototypeOf(object);

    if (object.constructor === realm.Object) {
      return prototype === realm.Object.prototype ? {} : create(prototype);
    }

    if (~toStringFunction.call(object.constructor).indexOf('[native code]')) {
      try {
        return new object.constructor();
      } catch (e) {// Error
      }
    }

    return create(prototype);
  }
@function getCleanClone

@description
get an empty version of the object with the same prototype it has

@param object the object to build a clean clone from
@param realm the realm the object resides in
@returns the empty cloned object