code: def _merge_splits(self, guest_splits, host_splits_list):
      splits = []
      for node_idx in range(len(guest_splits)):
          best_gain = -np.inf
          best_splitinfo = None
          guest_splitinfo: SplitInfo = guest_splits[node_idx]
          if (
              guest_splitinfo is not None
              and guest_splitinfo.gain > best_gain
          ):
              best_gain = guest_splitinfo.gain
              best_splitinfo = guest_splitinfo
  
          for host_idx in range(len(host_splits_list)):
              host_splits = host_splits_list[host_idx]
              host_splitinfo: SplitInfo = host_splits[node_idx]
              if (
                  host_splitinfo is not None
                  and host_splitinfo.gain > best_gain
              ):
                  best_gain = host_splitinfo.gain
                  best_splitinfo = host_splitinfo
          splits.append(best_splitinfo)
  
      return splits
  
imports: import torch
  import numpy
  import logging
  from fate.arch.dataframe import DataFrame
  from fate.arch import Context
  from fate.arch.histogram import DistributedHistogram
label_desc: Use image node_id 12 for calling the SBTSplitter obj's underlying member method code with example usage: obj._merge_splits(guest_splits, host_splits_list) and returns: splits