package ru.dbotthepony.mc.otm.core.multiblock

enum class Strategy {
	/**
	 * Tests `true` if and only if both are true:
	 * * at least one predicate tests `true` (or there are no predicates)
	 * * at least one children node tests `true` (or there are no children nodes)
	 */
	OR_BOTH,

	/**
	 * Same as [OR_BOTH], but equates predicates and children in single check, so
	 * if single predicate or single children tests true, node tests true.
	 *
	 * This is default behavior of multiblock nodes, and implied operation of "or" function.
	 */
	OR_EITHER,

	/**
	 * Tests `true` if and only if:
	 * * all predicates tests `true` (or there are no predicates)
	 * * all children node tests `true` (or there are no children nodes)
	 */
	AND;
}
