def METHOD_NAME(self, policy_definition: dict[str, Any], record: Record | dict[str, Any]) -> Predicament | None:
    if not policy_definition:
        return None
    top_level_logical_op = ''
    if not any(op in policy_definition.keys() for op in SUPPORTED_LOGICAL_OPERATORS):
        top_level_logical_op = 'and'
    top_level_predicament = Predicament(logical_op=top_level_logical_op)
    for key, value in policy_definition.items():
        if key in SUPPORTED_LOGICAL_OPERATORS:
            top_level_logical_op = key
            top_level_predicament.logical_op = key
        else:
            predicate = self._create_predicate(key, value, record)
            if predicate:
                top_level_predicament.predicates.append(predicate)
    nested_definition = policy_definition.get(top_level_logical_op)
    if not nested_definition:
        return top_level_predicament
    nested_logical_op = None
    for definition in nested_definition:
        for key, value in definition.items():
            if key in SUPPORTED_LOGICAL_OPERATORS:
                nested_logical_op = key
            else:
                predicate = self._create_predicate(key, value, record)
                if predicate:
                    top_level_predicament.predicates.append(predicate)
    nested_predicament = None
    if nested_logical_op:
        nested_definition = nested_definition[0][nested_logical_op]
        if not isinstance(nested_definition, list):
            return None
        nested_predicament = Predicament(logical_op=nested_logical_op)
        for definition in nested_definition:
            for key, value in definition.items():
                predicate = self._create_predicate(key, value, record)
                if predicate:
                    nested_predicament.predicates.append(predicate)
    if nested_predicament:
        top_level_predicament.predicaments.append(nested_predicament)
    return top_level_predicament