def METHOD_NAME(cls, tag: ET.Element, field_types_by_caption=None):
    lbl = super().METHOD_NAME(tag, field_types_by_caption)
    if lbl.field_type is None or lbl.field_type.function != FieldType.Function.CHECKSUM:
        checksum_field_type = next(
            (ft for ft in field_types_by_caption.values() if ft.function == FieldType.Function.CHECKSUM),
            FieldType("checksum", FieldType.Function.CHECKSUM, display_format_index=1))
        lbl.field_type = checksum_field_type
    result = cls.from_label(lbl)
    result.data_ranges = ast.literal_eval(tag.get("data_ranges", "[]"))
    result.category = cls.Category[tag.get("category", "generic")]
    crc_tag = tag.find("crc")
    if crc_tag is not None:
        result.checksum = GenericCRC.METHOD_NAME(crc_tag)
    wsp_tag = tag.find("wsp_checksum")
    if wsp_tag is not None:
        result.checksum = WSPChecksum.METHOD_NAME(wsp_tag)
    return result