constructor(type, data = null, options = {}) {
    this.type = type || 'data';
    this.data = data;
    this.isIP = true;
    /** @type {string|null} */
    this.scope = null; // sync scope id
    /** @type {import("./Component").Component|null} */
    this.owner = null; // packet owner process
    this.clonable = false; // cloning safety flag
    /** @type {number|null} */
    this.index = null; // addressable port index
    this.schema = null;
    this.datatype = 'all';
    this.initial = false;
    if (typeof options === 'object') {
      Object.keys(options).forEach((key) => { this[key] = options[key]; });
    }
    return this;
  }
@param {string} type
@param {any} data
@param {IPOptions} [options]