send(outputMap) {
    if (isError(outputMap)) {
      const errors = /** @type {Error|Array<Error>} */ (outputMap);
      this.error(errors);
      return;
    }

    /** @type {Array<string>} */
    const componentPorts = [];
    let mapIsInPorts = false;
    Object.keys(this.ports.ports).forEach((port) => {
      if ((port !== 'error') && (port !== 'ports') && (port !== '_callbacks')) { componentPorts.push(port); }
      if (!mapIsInPorts && (outputMap != null) && (typeof outputMap === 'object') && (Object.keys(outputMap).indexOf(port) !== -1)) {
        mapIsInPorts = true;
      }
    });

    if ((componentPorts.length === 1) && !mapIsInPorts) {
      this.sendIP(componentPorts[0], outputMap);
      return;
    }

    if ((componentPorts.length > 1) && !mapIsInPorts) {
      throw new Error('Port must be specified for sending output');
    }

    Object.keys(outputMap).forEach((port) => {
      const packet = outputMap[port];
      this.sendIP(port, packet);
    });
  }
@param {Error|Array<Error>|Object<string, any>} outputMap