define(['./isObject', './_setup'], function (isObject, _setup) {
  // Create a naked function reference for surrogate-prototype-swapping.
  function ctor() {
    return function () {};
  } // An internal function for creating a new object that inherits from another.


  function baseCreate(prototype) {
    if (!isObject(prototype)) return {};
    if (_setup.nativeCreate) return _setup.nativeCreate(prototype);
    var Ctor = ctor();
    Ctor.prototype = prototype;
    var result = new Ctor();
    Ctor.prototype = null;
    return result;
  }

  return baseCreate;
});