'use strict'; 
 | 
var isCallable = require('../internals/is-callable'); 
 | 
var isObject = require('../internals/is-object'); 
 | 
var setPrototypeOf = require('../internals/object-set-prototype-of'); 
 | 
  
 | 
// makes subclassing work correct for wrapped built-ins 
 | 
module.exports = function ($this, dummy, Wrapper) { 
 | 
  var NewTarget, NewTargetPrototype; 
 | 
  if ( 
 | 
    // it can work only with native `setPrototypeOf` 
 | 
    setPrototypeOf && 
 | 
    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this 
 | 
    isCallable(NewTarget = dummy.constructor) && 
 | 
    NewTarget !== Wrapper && 
 | 
    isObject(NewTargetPrototype = NewTarget.prototype) && 
 | 
    NewTargetPrototype !== Wrapper.prototype 
 | 
  ) setPrototypeOf($this, NewTargetPrototype); 
 | 
  return $this; 
 | 
}; 
 |