code: function (config, whitelistOverride, sslOverride) {
  	// config has been added as the primary parameter
  	// If it is provided ensure that the other paramaters are correctly assigned
  	// for backwards compatibility
  	if (Array.isArray(config)) {
  		whitelistOverride = config;
  		sslOverride = whitelistOverride;
  		config = undefined;
  	}
  
  	this._whitelistOverride = whitelistOverride;
  	this._sslOverride = sslOverride;
  	this._messageId = 1;
  	this._messages = {
  		0: function () {}
  	};
  	this._readyToPost = false;
  	this._pendingMessages = [];
  	this._receiveMessage = this._receiveMessage.bind(this);
  
  	window.addEventListener('message', this._receiveMessage, false);
  
  	window.parent.postMessage({
  		method: 'handShake',
  		origin: window.location.origin,
  		payload: config
  	}, '*');
  }
docs: /*
  Copyright (c) 2018, salesforce.com, inc.
  All rights reserved.
  Licensed under the BSD 3-Clause license.
  For full license text, see LICENSE.txt file in the repo root  or https://opensource.org/licenses/BSD-3-Clause