code: function JailedSite(connection) {
    this._interface = {}
    this._remote = null
    this._remoteUpdateHandler = function() {
    }
    this._getInterfaceHandler = function() {
    }
    this._interfaceSetAsRemoteHandler = function() {
    }
    this._disconnectHandler = function() {
    }
    this._store = new ReferenceStore
  
    var _this = this
    this._connection = connection
    this._connection.onMessage(
      function(data) {
        _this._processMessage(data)
      }
    )
  
    this._connection.onDisconnect(
      function(m) {
        _this._disconnectHandler(m)
      }
    )
  }
docs: JailedSite object represents a single site in the
  communication protocol between the application and the plugin
  
  @param {Object} connection a special object allowing to send
  and receive messages from the opposite site (basically it
  should only provide send() and onMessage() methods)