code: def add_name(self, name):
      cat_name = (
          type(name) == str
          and partition_string(name, ".")
          or ["", "", ""]
      )
      if cat_name[1]:
          if cat_name[0] not in self.parser_obj.current_target[-2]:
              self.parser_obj.current_target[-2][cat_name[0]] = {}
          if (
              cat_name[2]
              not in self.parser_obj.current_target[-2][cat_name[0]]
          ):
              self.parser_obj.current_target[-2][cat_name[0]][
                  cat_name[2]
              ] = []
          self.ref_list.append(
              self.parser_obj.current_target[-2][cat_name[0]][
                  cat_name[2]
              ]
          )
      else:
          if cat_name[0] not in self.parser_obj.current_target[-2]:
              self.parser_obj.current_target[-2][cat_name[0]] = []
          self.ref_list.append(
              self.parser_obj.current_target[-2][cat_name[0]]
          )
      self.length = len(self.ref_list)
  
imports: import contextlib
  import gzip
  import json
  import re
label_desc: Use image node_id 2 for calling the LoopMMCIF obj's underlying member method code with example usage: obj.add_name(name) without return types