wrap_(param, maxDepth = 1000) {
    if (!maxDepth)
      throw new Error('Object reference chain is too long');
    maxDepth--;
    if (!param)
      return param;

    if (param[handleSymbol]) {
      const handle = param[handleSymbol];
      return { __rpc_a__: handle.address_, descriptor: handle.descriptor_ };
    }

    if (param instanceof Array)
      return param.map(item => this.wrap_(item, maxDepth));

    if (typeof param === 'object') {
      const result = {};
      for (const key in param)
        result[key] = this.wrap_(param[key], maxDepth);
      return result;
    }

    return param;
  }
Wraps call argument as a protocol structures.
@param {*} param
@param {number=} maxDepth
@return {*}