code: def _compute_features_split_values(self) -> List[numpy.ndarray]:
      all_split_values: List[Set[float]] = [
          set() for _ in range(self._n_features)
      ]
  
      for node_index in range(self._n_nodes):
          feature = self._get_node_split_feature(node_index)
          if (
              feature >= 0
          ):  # Not leaf. Avoid unnecessary call to `_is_node_leaf`.
              threshold = self._get_node_split_threshold(node_index)
              all_split_values[feature].add(threshold)
  
      sorted_all_split_values: List[numpy.ndarray] = []
  
      for split_values in all_split_values:
          split_values_array = numpy.array(
              list(split_values), dtype=numpy.float64
          )
          split_values_array.sort()
          sorted_all_split_values.append(split_values_array)
  
      return sorted_all_split_values
  
imports: from __future__ import annotations
  from functools import lru_cache
  import itertools
  from typing import List
  from typing import Set
  from typing import Tuple
  from typing import TYPE_CHECKING
  from typing import Union
  import numpy
label_desc: Use image node_id 7 for calling the _FanovaTree obj's underlying member method code with example usage: obj._compute_features_split_values() and returns: sorted_all_split_values