public function filter(\Closure $c)
 {
     $filtered = $this->expression->filter($c);
     if ($this->codeChunks !== null) {
         foreach ($this->codeChunks->getCodeChunks() as $codeChunk) {
             $filtered = array_merge($filtered, $codeChunk->filter($c));
         }
     }
     return $filtered;
 }
 public function filter(\Closure $c)
 {
     return array_merge($this->leftValue->filter($c), $this->rightValue->filter($c));
 }
 public function convertExpression(TES4Expression $expression, TES5CodeScope $codeScope, TES5GlobalScope $globalScope, TES5MultipleScriptsScope $multipleScriptsScope)
 {
     $operator = TES5ArithmeticExpressionOperator::memberByValueWithDefault($expression->getOperator()->value(), null);
     if ($operator === null) {
         $operator = TES5LogicalExpressionOperator::memberByValueWithDefault($expression->getOperator()->value(), null);
         if ($operator === null) {
             $operator = TES5BinaryExpressionOperator::memberByValueWithDefault($expression->getOperator()->value(), null);
             if ($operator === null) {
                 throw new ConversionException("Unknown expression operator");
             }
             return $this->expressionFactory->createBinaryExpression($this->createValue($expression->getLeftValue(), $codeScope, $globalScope, $multipleScriptsScope), $operator, $this->createValue($expression->getRightValue(), $codeScope, $globalScope, $multipleScriptsScope));
         }
         return $this->expressionFactory->createLogicalExpression($this->createValue($expression->getLeftValue(), $codeScope, $globalScope, $multipleScriptsScope), $operator, $this->createValue($expression->getRightValue(), $codeScope, $globalScope, $multipleScriptsScope));
     }
     return $this->convertArithmeticExpression($expression, $codeScope, $globalScope, $multipleScriptsScope);
 }