async def METHOD_NAME(self, payload: dict, in_edge=None):
    dot = self._get_dot_accessor(payload)
    value = dot[self.config.field]
    if not isinstance(value, str):
        raise WrongFieldTypeError(f"Given field must be an array or string type. {type(value)} given")
    if self.config.pattern == "all":
        found_matched = defaultdict(list)
        for k, v in patterns.items():
            matched = re.finditer(patterns[k], value)
            for match in matched:
                found_matched[k].append(match.group(0))
        if found_matched:
            return Result(port='true', value=found_matched)
    elif self.config.pattern == "email":
        if re.match(patterns["email"], value):
            return Result(port="true", value={"email": [value]})
    elif self.config.pattern == "url":
        if re.match(patterns["url"], value):
            return Result(port="true", value={"url": [value]})
    elif self.config.pattern == "date":
        if re.match(patterns["date"], value):
            return Result(port="true", value={"date": [value]})
    elif self.config.pattern == "ip":
        if re.match(patterns["ip"], value):
            return Result(port="true", value={"ip": [value]})
    return Result(port="false", value={"message": "Didn't find any patterns"})