code: def check_dseparation(
      graph: nx.DiGraph,
      nodes1,
      nodes2,
      nodes3,
      new_graph=None,
      dseparation_algo="default",
  ):
      if dseparation_algo == "default":
          if new_graph is None:
              new_graph = graph
          dseparated = nx.algorithms.d_separated(
              new_graph, set(nodes1), set(nodes2), set(nodes3)
          )
      else:
          raise ValueError(
              f"{dseparation_algo} method for d-separation not supported."
          )
      return dseparated
  
imports: import itertools
  import logging
  import re
  from abc import abstractmethod
  from typing import Any, List, Protocol
  import networkx
  from networkx.algorithms.dag import has_cycle
  from dowhy.utils.api import parse_state
  from dowhy.utils.graph_operations import daggity_to_dot
label_desc: Use image node_id 11 for calling a global function with example usage: check_dseparation(graph, nodes1, nodes2, nodes3, new_graph, dseparation_algo) and returns: dseparated