code: def test_when_using_distribution_change_with_return_additional_info_then_returns_additional_info():
      original_observations, outlier_observations = _generate_data()
  
      causal_model = ProbabilisticCausalModel(
          nx.DiGraph([("X0", "X1"), ("X0", "X2"), ("X2", "X3")])
      )
      _assign_causal_mechanisms(causal_model)
  
      (
          attributions,
          mechanism_changes,
          causal_model_old,
          causal_model_new,
      ) = distribution_change(
          causal_model,
          original_observations,
          outlier_observations,
          "X3",
          mechanism_change_test_fdr_control_method=None,
          return_additional_info=True,
      )
  
      assert (
          attributions["X3"] > attributions["X2"] > attributions["X0"]
      )
      assert "X1" not in attributions
  
      assert not mechanism_changes["X0"]
      assert mechanism_changes["X2"]
      assert mechanism_changes["X3"]
  
      assert "X1" not in causal_model_old.graph.nodes
      assert "X1" not in causal_model_new.graph.nodes
  
      for node in causal_model.graph.nodes:
          if node == "X1":
              continue
          assert type(causal_model_old.causal_mechanism(node)) == type(
              causal_model_new.causal_mechanism(node)
          )
  
imports: import networkx
  import numpy
  import pandas
  from flaky import flaky
  from pytest import approx
  from dowhy.gcm import AdditiveNoiseModel, EmpiricalDistribution, ProbabilisticCausalModel, distribution_change, distribution_change_of_graphs, fit
  from dowhy.gcm.auto import AssignmentQuality
  from dowhy.gcm.distribution_change import mechanism_change_test
  from dowhy.gcm.ml import create_linear_regressor
  from dowhy.gcm.shapley import ShapleyConfig
label_desc: Use image node_id 5 for calling a global function with example usage: test_when_using_distribution_change_with_return_additional_info_then_returns_additional_info() without return types