code: function explore(node) {
  
      if (Array.isArray(node)) {
          for (const el of node) {
              if(typeof el === 'object') {
                  explore(el);
              }
          }
          return;
      }
  
      if (typeof node !== 'object') {
          return;
      }
  
      const kindString = node.kindString;
  
      // Collect kinds, map kinds to props
      if (kindString) {
          kindCount.set(kindString, (kindCount.get(kindString) || 0) + 1);
  
          for (const propName in node) {
  
              if (propName  ==='signatures' && node[propName].length > 1) {
                  console.log('!!!!!', node.id, node.name, node.kindString);
              }
  
              if (!propKindCounts.has(propName)) {
                  propKindCounts.set(propName, new Map());
              }
              const kindCountsForThisProp = propKindCounts.get(propName);
              kindCountsForThisProp.set(kindString, (kindCountsForThisProp.get(kindString) || 0) + 1);
          }
      }
  
      // Recurse
      for (const prop of Object.values(node)) {
          if (typeof prop === 'object') {
              explore(prop);
          }
      }
  }
docs: propName -> (kindString -> count)