public MultivaluedHierarchicalFacet(MultivaluedHierarchicalFacet facet) {
    super(facet);
    this.displayValue = facet.getDisplayValue();

    for (HierarchicalFacetNode node : facet.getFacetNodes()) {
      MultivaluedHierarchicalFacetNode newNode =
          new MultivaluedHierarchicalFacetNode(node.getFacetValue());
      this.facetNodes.add(newNode);
    }
  }
 public void setDisplayValues(MultivaluedHierarchicalFacet facet) {
   int startingCount = this.facetNodes.size();
   String targetJoined = this.getLastNode().joinTiers(false);
   for (HierarchicalFacetNode node : facet.getFacetNodes()) {
     MultivaluedHierarchicalFacetNode targetNode =
         (MultivaluedHierarchicalFacetNode) this.getNodeBySearchValue(node.getSearchValue());
     if (targetNode != null) {
       log.debug("Adding in display value " + node.getDisplayValue());
       targetNode.setDisplayValue(node.getDisplayValue());
     } else {
       String joined = ((MultivaluedHierarchicalFacetNode) node).joinTiers(false);
       if (targetJoined.indexOf(joined) == 0) {
         log.debug(
             "Adding in missing node " + node.getSearchValue() + "," + node.getDisplayValue());
         this.facetNodes.add((HierarchicalFacetNode) node.clone());
       }
     }
   }
   // If the number of nodes has changed, then resort
   if (this.facetNodes.size() != startingCount) {
     this.sortTiers();
   }
 }