Prepare the cached fields of the fields_desc dict

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)