    A mapping of each facet name to the corresponding facet counts for hierarchical facets.
    - Returned only by the [EndpointSearch.advancedSearch] method, only if a [FilterGroup.And.Hierarchical] is used.
   */
-  public var hierarchicalFacets: [Attribute: [Facet]] {
+  public var hierarchicalFacets: [Attribute: [Facet]]? {
     
     get {
-      return hierarchicalFacetsStorage?.storage ?? [:]
+      return hierarchicalFacetsStorage?.storage
     }
     
     set {
-      hierarchicalFacetsStorage = .init(storage: newValue)
+      hierarchicalFacetsStorage = newValue.flatMap(FacetsStorage.init(storage:))
     }
     
   }

   A mapping of each facet name to the corresponding facet counts.
   - Returned only if Query.facets is non-empty.
  */
  public var facets: [Attribute: [Facet]] {
  
    get {
      return facetsStorage?.storage ?? [:]
    }
    
    set {
      facetsStorage = .init(storage: newValue)
    }
  
  }

   - Returned only by the EndpointSearch.advancedSearch method.
   - [Documentation](https://www.algolia.com/doc/guides/building-search-ui/going-further/backend-search/how-to/faceting/?language=kotlin#conjunctive-and-disjunctive-faceting)
   */
  public var disjunctiveFacets: [Attribute: [Facet]]? {
    
    get {
      return disjunctiveFacetsStorage?.storage
    }
    
    set {
      disjunctiveFacetsStorage = newValue.flatMap(FacetsStorage.init(storage:))
    }
    
  }
