code: def _sync_nodes(
      self,
      ctx: Context,
      cur_layer_nodes: List[Node],
      next_layer_nodes: List[Node],
  ):
      mask_cur_layer = self._mask_node(ctx, cur_layer_nodes)
      mask_next_layer = self._mask_node(ctx, next_layer_nodes)
      ctx.hosts.put("sync_nodes", [mask_cur_layer, mask_next_layer])
  
imports: from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import DecisionTree, Node, _update_sample_pos_on_local_nodes, _merge_sample_pos
  from fate.ml.ensemble.learner.decision_tree.tree_core.hist import SBTHistogramBuilder
  from fate.ml.ensemble.learner.decision_tree.tree_core.splitter import SBTSplitter
  from fate.ml.ensemble.learner.decision_tree.tree_core.loss import get_task_info
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import ALL_FEAT, GUEST_FEAT_ONLY
  from fate.ml.utils.predict_tools import BINARY, MULTI, REGRESSION
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from typing import List
  import functools
  import logging
  import pandas
  import torch
  import math
label_desc: Use image node_id 10 for calling the HeteroDecisionTreeGuest obj's underlying member method code with example usage: obj._sync_nodes(ctx, cur_layer_nodes, next_layer_nodes) without return types