docs: def prepare_cached_fields(self, flist):
          """
          Prepare the cached fields of the fields_desc dict
          """
  
          cls_name = self.__class__
  
          # Fields cache initialization
          if flist:
              Packet.class_default_fields[cls_name] = dict()
              Packet.class_default_fields_ref[cls_name] = list()
              Packet.class_fieldtype[cls_name] = dict()
              Packet.class_packetfields[cls_name] = list()
  
          # Fields initialization
          for f in flist:
              if isinstance(f, MultipleTypeField):
                  del Packet.class_default_fields[cls_name]
                  del Packet.class_default_fields_ref[cls_name]
                  del Packet.class_fieldtype[cls_name]
                  del Packet.class_packetfields[cls_name]
                  self.class_dont_cache[cls_name] = True
                  self.do_init_fields(self.fields_desc)
                  break
  
              tmp_copy = copy.deepcopy(f.default)
              Packet.class_default_fields[cls_name][f.name] = tmp_copy
              Packet.class_fieldtype[cls_name][f.name] = f
              if f.holds_packets:
                  Packet.class_packetfields[cls_name].append(f)
  
              # Remember references
              if isinstance(f.default, (list, dict, set, RandField, Packet)):
                  Packet.class_default_fields_ref[cls_name].append(f.name)