_insert(nodes) {
    var key = this._getMapKey(nodes);

    nodes.forEach(node => {
      if (!node.occurrences) {
        node.occurrences = {};
      }
      if (!node.occurrences[key]) {
        node.occurrences[key] = [];
      }
      node.occurrences[key].push(nodes);
    });

    if (!this._map[key]) {
      this._map[key] = [];
    }

    this._map[key].push(nodes);
  }
Generates a key based on the combined types of each of the supplied nodes.
Pushes the array to another array at the generated key in _map. Nodes
are updated to keep a reference to all their occurrences in _map.

@private

@param {Node[]} nodes