def METHOD_NAME(cls) -> List[interfaces.configuration.RequirementInterface]:
    return [
        requirements.ModuleRequirement(
            name="kernel",
            description="Windows kernel",
            architectures=["Intel32", "Intel64"],
        ),
        requirements.BooleanRequirement(
            name="wide",
            description="Match wide (unicode) strings",
            default=False,
            optional=True,
        ),
        requirements.StringRequirement(
            name="yara_rules", description="Yara rules (as a string)", optional=True
        ),
        requirements.URIRequirement(
            name="yara_file", description="Yara rules (as a file)", optional=True
        ),
        # This additional requirement is to follow suit with upstream, who feel that compiled rules could potentially be used to execute malicious code
        # As such, there's a separate option to run compiled files, as happened with yara-3.9 and later
        requirements.URIRequirement(
            name="yara_compiled_file",
            description="Yara compiled rules (as a file)",
            optional=True,
        ),
        requirements.IntRequirement(
            name="max_size",
            default=0x40000000,
            description="Set the maximum size (default is 1GB)",
            optional=True,
        ),
        requirements.PluginRequirement(
            name="pslist", plugin=pslist.PsList, version=(2, 0, 0)
        ),
        requirements.VersionRequirement(
            name="yarascanner", component=yarascan.YaraScanner, version=(2, 0, 0)
        ),
        requirements.ListRequirement(
            name="pid",
            element_type=int,
            description="Process IDs to include (all other processes are excluded)",
            optional=True,
        ),
    ]