docs: def evaluate(conditions, leaf_evaluator):
    """ Top level method to evaluate conditions.
  
    Args:
      conditions: Nested array of and/or conditions, or a single leaf condition value of any type.
                  Example: ['and', '0', ['or', '1', '2']]
      leaf_evaluator: Function which will be called to evaluate leaf condition values.
  
    Returns:
      Boolean: Result of evaluating the conditions using the operator rules and the leaf evaluator.
      None: if conditions couldn't be evaluated.
  
    """
  
    if isinstance(conditions, list):
      if conditions[0] in list(EVALUATORS_BY_OPERATOR_TYPE.keys()):
        return EVALUATORS_BY_OPERATOR_TYPE[conditions[0]](conditions[1:], leaf_evaluator)
      else:
        # assume OR when operator is not explicit.
        return EVALUATORS_BY_OPERATOR_TYPE[ConditionOperatorTypes.OR](conditions, leaf_evaluator)
  
    leaf_condition = conditions
    return leaf_evaluator(leaf_condition)