/**
  * Called by FacetComponent.countFacets which is in turn called by FC's impl of {@link
  * org.apache.solr.handler.component.SearchComponent#handleResponses(ResponseBuilder,
  * ShardRequest)}.
  */
 @SuppressWarnings("unchecked")
 public static void distribHandleResponse(
     LinkedHashMap<String, HeatmapFacet> heatmapFacets, NamedList srsp_facet_counts) {
   NamedList<NamedList<Object>> facet_heatmaps =
       (NamedList<NamedList<Object>>) srsp_facet_counts.get(RESPONSE_KEY);
   if (facet_heatmaps == null) {
     return;
   }
   // (should the caller handle the above logic?  Arguably yes.)
   for (Map.Entry<String, NamedList<Object>> entry : facet_heatmaps) {
     String fieldKey = entry.getKey();
     NamedList<Object> shardNamedList = entry.getValue();
     final HeatmapFacet facet = heatmapFacets.get(fieldKey);
     if (facet == null) {
       log.error("received heatmap for field/key {} that we weren't expecting", fieldKey);
       continue;
     }
     facet.counts =
         addPngToIntArray((byte[]) shardNamedList.remove("counts_" + FORMAT_PNG), facet.counts);
     if (facet.namedList == null) {
       // First shard
       facet.namedList = shardNamedList;
     } else {
       assert facet.namedList.equals(shardNamedList);
     }
   }
 }
 /** Parses request to "HeatmapFacet" instances. */
 public static LinkedHashMap<String, HeatmapFacet> distribParse(
     SolrParams params, ResponseBuilder rb) {
   final LinkedHashMap<String, HeatmapFacet> heatmapFacets = new LinkedHashMap<>();
   final String[] heatmapFields = params.getParams(FacetParams.FACET_HEATMAP);
   if (heatmapFields != null) {
     for (String heatmapField : heatmapFields) {
       HeatmapFacet facet = new HeatmapFacet(rb, heatmapField);
       heatmapFacets.put(facet.getKey(), facet);
     }
   }
   return heatmapFacets;
 }