createDescriptorProxy = function(constructor) {
    try {
      var ProxyConstructor = function() {
        this.__realComponentInstance = new constructor();

        // We can only safely pass through known instance variables. Unknown
        // expandos are not safe. Use the real mounted instance to avoid this
        // problem if it blows something up.
        Object.freeze(this);
      };

      ProxyConstructor.prototype = createMountWarningMembrane(
        constructor.prototype
      );

      return ProxyConstructor;
    } catch(x) {
      // In IE8 define property will fail on non-DOM objects. If anything in
      // the membrane creation fails, we'll bail out and just use the plain
      // constructor without warnings.
      return constructor;
    }
  }
Creates a membrane constructor which wraps the component that gets mounted.

@param {function} constructor Original constructor.
@return {function} The membrane constructor.
@private