def used_tree(key_filter: nil, strict: nil, include_raw_references: false)
      src_tree = used_in_source_tree(key_filter: key_filter, strict: strict)
      raw_refs, resolved_refs, used_refs = process_references(src_tree['used'].children)
      raw_refs.leaves { |node| node.data[:ref_type] = :reference_usage }
      resolved_refs.leaves { |node| node.data[:ref_type] = :reference_usage_resolved }
      used_refs.leaves { |node| node.data[:ref_type] = :reference_usage_key }
      src_tree.tap do |result|
        tree = result['used'].children
        tree.subtract_by_key!(raw_refs)
        tree.merge!(raw_refs) if include_raw_references
        tree.merge!(used_refs).merge!(resolved_refs)
      end
    end
def used_tree(key_filter: nil, strict: nil, include_raw_references: false)
      src_tree = used_in_source_tree(key_filter: key_filter, strict: strict)
      raw_refs, resolved_refs, used_refs = process_references(src_tree['used'].children)
      raw_refs.leaves { |node| node.data[:ref_type] = :reference_usage }
      resolved_refs.leaves { |node| node.data[:ref_type] = :reference_usage_resolved }
      used_refs.leaves { |node| node.data[:ref_type] = :reference_usage_key }
      src_tree.tap do |result|
        tree = result['used'].children
        tree.subtract_by_key!(raw_refs)
        tree.merge!(raw_refs) if include_raw_references
        tree.merge!(used_refs).merge!(resolved_refs)
      end
    end
Find all keys in the source and return a forest with the keys in absolute form and their occurrences.

 @param key_filter [String] only return keys matching this pattern.
 @param strict [Boolean] if true, dynamic keys are excluded (e.g. `t("category.#{ category.key }")`)
 @param include_raw_references [Boolean] if true, includes reference usages as they appear in the source
 @return [Data::Tree::Siblings]