code: def test_build_skeleton_stable(self):
      skel, sep_set = self.estimator.build_skeleton(
          ci_test=TestPCFakeCITest.fake_ci_t, variant="stable"
      )
      expected_edges = {("A", "C"), ("A", "D")}
      for u, v in skel.edges():
          self.assertTrue(
              ((u, v) in expected_edges) or ((v, u) in expected_edges)
          )
  
      skel, sep_set = self.estimator.build_skeleton(
          ci_test=TestPCFakeCITest.fake_ci_t,
          max_cond_vars=0,
          variant="stable",
      )
      expected_edges = {("A", "B"), ("A", "C"), ("A", "D")}
      for u, v in skel.edges():
          self.assertTrue(
              ((u, v) in expected_edges) or ((v, u) in expected_edges)
          )
  
imports: import unittest
  import networkx
  import numpy
  import pandas
  from joblib.externals.loky import get_reusable_executor
  from pgmpy.estimators import PC
  from pgmpy.independencies import Independencies
  from pgmpy.models import BayesianNetwork
  from pgmpy.sampling import BayesianModelSampling
  from pgmpy.utils import get_example_model
label_desc: Use image node_id 4 for calling the TestPCFakeCITest obj's underlying member method code with example usage: obj.test_build_skeleton_stable() without return types