/**
  * @param Expression    $expression
  * @param Configuration $configuration
  *
  * @return Clause
  */
 private function transformExpression(Expression $expression, Configuration $configuration)
 {
     if (!isset($this->expressionTransformers[$expression->getExp()])) {
         throw new \InvalidArgumentException(sprintf('Unknown or unsupported expression type "%s"', $expression->getExp()));
     }
     return call_user_func($this->expressionTransformers[$expression->getExp()], $this, $expression, $configuration);
 }
 /**
  * @param Expression    $expression
  * @param mixed         $element
  * @param Configuration $config
  *
  * @return mixed
  */
 private function resolveExpression(Expression $expression, $element, Configuration $config)
 {
     if (!isset($this->resolvers[$expression->getExp()])) {
         throw new \InvalidArgumentException(sprintf('Unknown or unsupported expression type "%s"', get_class($expression)));
     }
     return call_user_func($this->resolvers[$expression->getExp()], $this, $expression, $element, $config);
 }