docs: function(protoIRs) {
        var newPIRs = [];
        while (protoIRs.length) {
          var pir = protoIRs.shift();
          newPIRs.push(pir);
  
          // Only consider Responses for now.
          if (pir.irType !== ProtoIR.RESPONSE_TYPE)
            continue;
  
          for (var i = 0; i < protoIRs.length; ++i) {
            var otherPIR = protoIRs[i];
  
            if (otherPIR.irType !== pir.irType)
              continue;
  
            if (!otherPIR.intersects(pir))
              continue;
  
            // Don't merge together Responses of the same type.
            // If handleTouchEvents wanted two of its Responses to be merged, then
            // it would have made them that way to begin with.
            var typeNames = pir.associatedEvents.map(function(event) {
              return event.typeName;
            });
            if (otherPIR.containsTypeNames(typeNames))
              continue;
  
            pir.merge(otherPIR);
            protoIRs.splice(i, 1);
            // Don't skip the next otherPIR!
            --i;
          }
        }
        return newPIRs;
      }