code: def test_special_model_dump_characters(self) -> None:
      params = {"objective": "reg:squarederror", "max_depth": 3}
      feature_names = [
          '"feature 0"',
          "\tfeature\n1",
          """feature "2".""",
      ]
      X, y, w = tm.make_regression(
          n_samples=128, n_features=3, use_cupy=False
      )
      Xy = xgb.DMatrix(X, label=y, feature_names=feature_names)
      booster = xgb.train(params, Xy, num_boost_round=3)
  
      json_dump = booster.get_dump(dump_format="json")
      assert len(json_dump) == 3
  
      def validate_json(obj: dict) -> None:
          for k, v in obj.items():
              if k == "split":
                  assert v in feature_names
              elif isinstance(v, dict):
                  validate_json(v)
  
      for j_tree in json_dump:
          loaded = json.loads(j_tree)
          validate_json(loaded)
  
      dot_dump = booster.get_dump(dump_format="dot")
      for d in dot_dump:
          assert d.find(r"feature \"2\"") != -1
  
      text_dump = booster.get_dump(dump_format="text")
      for d in text_dump:
          assert d.find(r"feature \"2\"") != -1
  
imports: import json
  import os
  import tempfile
  import numpy
  import pytest
  import xgboost
  from xgboost import testing
  from xgboost.testing.updater import ResetStrategy
label_desc: Use image node_id 13 for calling the TestModels obj's underlying member method code with example usage: obj.test_special_model_dump_characters() without return types