code: def persist(self, path):
      path = Path(path)
      path.mkdir()
      parser_directory = "parser"
      metadata = {
          "language": self.language,
          "parser_usage": self.parser_usage.value,
          "parser_directory": parser_directory,
      }
      with (path / "metadata.json").open(
          mode="w", encoding="utf8"
      ) as f:
          f.write(json_string(metadata))
      self._parser.persist(path / parser_directory)
  
imports: from __future__ import unicode_literals
  import json
  import operator
  from copy import deepcopy
  from pathlib import Path
  from future.utils import iteritems, viewvalues
  from snips_nlu.common.utils import json_string
  from snips_nlu.constants import END, ENTITIES, LANGUAGE, MATCHING_STRICTNESS, START, UTTERANCES, LICENSE_INFO
  from snips_nlu.entity_parser.builtin_entity_parser import is_builtin_entity
  from snips_nlu.entity_parser.custom_entity_parser_usage import CustomEntityParserUsage
  from snips_nlu.entity_parser.entity_parser import EntityParser
  from snips_nlu.preprocessing import stem, tokenize, tokenize_light
  from snips_nlu.result import parsed_entity
label_desc: Use image node_id 3 for calling the CustomEntityParser obj's underlying member method code with example usage: obj.persist(path) without return types