code: function findUniqueKeys (obj, keys, stack) {
    if (typeof obj === 'object' && obj) {
      if (stack.indexOf(obj) < 0) {
        stack.push(obj)
      } else {
        throw new TypeError('Converting circular reference to JSON')
      }
      if (obj instanceof Array) {
        obj.forEach(function (element) {
          findUniqueKeys(element, keys, stack)
        })
      } else {
        Object.keys(obj).forEach(function (key) {
          if (!keys[key]) {
            keys[key] = 1
          }
          findUniqueKeys(obj[key], keys, stack)
        })
      }
      stack.pop()
    }
    return keys
  }
docs: Base class for the different Data Exchange Layer (DXL) message types.
  @external Message
  @see {@link https://opendxl.github.io/opendxl-client-javascript/jsdoc/Message.html}
   
  Finds unique key names in an object hierarchy.
  @param obj - The object to search.
  @param {Object} keys - Keys found so far. Each property name represents
  the name of a unique key which has been found.
  @param {Array<Object>} stack - Stack of objects above the supplied obj
  in the hierarchy.
  @throws {TypeError} If a circular reference has been found in the object
  hierarchy.
  @private