code: def register_metadata(self, run_id, step_name, task_id, metadata):
      meta_dir = self._create_and_get_metadir(
          self._flow_name, run_id, step_name, task_id
      )
      metalist = self._metadata_to_json(
          run_id, step_name, task_id, metadata
      )
      ts = int(round(time.time() * 1000))
      metadict = {
          "sysmeta_%s_%d" % (meta["field_name"], ts): meta
          for meta in metalist
      }
      self._save_meta(meta_dir, metadict)
  
imports: import collections
  import glob
  import json
  import os
  import random
  import tempfile
  import time
  from collections import namedtuple
  from metaflow.exception import MetaflowInternalError, MetaflowTaggingError
  from metaflow.metadata.metadata import ObjectOrder
  from metaflow.metaflow_config import DATASTORE_LOCAL_DIR
  from metaflow.metadata import MetadataProvider
  from metaflow.tagging_util import MAX_USER_TAG_SET_SIZE, validate_tags
label_desc: Use image node_id 10 for calling the LocalMetadataProvider obj's underlying member method code with example usage: obj.register_metadata(run_id, step_name, task_id, metadata) without return types