private function parseComposite($operator, $args)
{
if (!in_array($operator, $this->composites)) {
throw new \InvalidArgumentException(sprintf('Unknown composite operator, got "%s". Valid operators: "%s"', $operator, implode('", "', $this->composites)));
}
if (count($args) < 2) {
throw new \InvalidArgumentException(sprintf('Constraints must have at least two arguments, got: "%s"', json_encode($args)));
}
$leftConstraint = $this->processExpr(array_shift($args));
foreach ($args as $rightArg) {
$rightConstraint = $this->processExpr($rightArg);
$composite = new Constraint\Composite($operator, $leftConstraint, $rightConstraint);
$leftConstraint = $composite;
}
return $composite;
}