public function __construct($value, $mode = self::MODE_NONE)
{
if (empty($value)) {
throw new \RuntimeException("Empty value supplied for Assertion");
} elseif (is_array($value)) {
foreach ($value as $v) {
if (!$v instanceof Assertion) {
throw new \RuntimeException("Invalid array key supplied for Assertion");
}
}
if ($mode !== self::MODE_UNION && $mode !== self::MODE_INTERSECTION) {
throw new \RuntimeException("Invalid mode supplied for Assertion");
}
$this->mode = $mode;
} elseif (!$value instanceof Operand) {
throw new \RuntimeException("Invalid value supplied for Assertion: ");
} else {
$this->mode = self::MODE_NONE;
}
$this->value = $value;
}