code: def test_encode_decode_with_spaces(self):
      tokenizers = self.get_tokenizers(do_lower_case=False)
      for tokenizer in tokenizers:
          with self.subTest(f"{tokenizer.__class__.__name__}"):
              nodes, xpaths = self.get_nodes_and_xpaths()
  
              new_toks = [
                  AddedToken("[ABC]", normalized=False),
                  AddedToken("[DEF]", normalized=False),
              ]
              tokenizer.add_tokens(new_toks)
              input = "[ABC][DEF][ABC][DEF]"
              if self.space_between_special_tokens:
                  output = "[ABC] [DEF] [ABC] [DEF]"
              else:
                  output = input
              encoded = tokenizer.encode(
                  input.split(), xpaths=xpaths, add_special_tokens=False
              )
              decoded = tokenizer.decode(
                  encoded,
                  spaces_between_special_tokens=self.space_between_special_tokens,
              )
              self.assertIn(decoded, [output, output.lower()])
  
imports: import inspect
  import json
  import os
  import re
  import shutil
  import tempfile
  import unittest
  from typing import List
  from transformers import AddedToken, MarkupLMTokenizerFast, SpecialTokensMixin, is_tf_available, is_torch_available, logging
  from transformers.models.markuplm.tokenization_markuplm import VOCAB_FILES_NAMES, MarkupLMTokenizer
  from transformers.testing_utils import is_pt_tf_cross_test, require_tokenizers, require_torch, slow
  from ...test_tokenization_common import SMALL_TRAINING_CORPUS, TokenizerTesterMixin, merge_model_tokenizer_mappings
label_desc: Use image node_id 9 for calling the MarkupLMTokenizationTest obj's underlying member method code with example usage: obj.test_encode_decode_with_spaces() without return types