private void recordSubtreeLineageCounts(PopsIONode node) {
   if (node.lft < 0) {
     int spIndex = piosb.speciesId2index(node.getTaxon().getId());
     node.nlineages = piosb.nLineages(spIndex);
   } else {
     node.nlineages = 0;
     recordSubtreeLineageCounts(pionodes[node.lft]);
     node.nlineages += pionodes[node.lft].nlineages - pionodes[node.lft].coalheights.size();
     recordSubtreeLineageCounts(pionodes[node.rgt]);
     node.nlineages += pionodes[node.rgt].nlineages - pionodes[node.rgt].coalheights.size();
   }
 }