@Override
   public String getValue(EvaluationContext context) {
      String result = null;
      if (expressions.length > 0) {
         // Execute first expression for getting result.
         result = expressions[0].getValue(context);
         for (int i = 1; i < expressions.length; i++) {
            Expression exp = expressions[i];
            if (exp instanceof FunctionExpression) {
               // Clone this expression, enriching args with previous result.
               FunctionExpression functionExp = (FunctionExpression) exp;
               String[] clonedArgs = Arrays.copyOf(functionExp.getFunctionArgs(),
                     functionExp.getFunctionArgs().length + 1);
               clonedArgs[clonedArgs.length - 1] = result;
               FunctionExpression clonedExp = new FunctionExpression(functionExp.getFunction(), clonedArgs);
               clonedExp.getValue(context);
            }
         }
      }
      return result;
   }
@Test
   void testLiteralRedirect() {
      Expression[] expressions = new Expression[] { new LiteralExpression("hello"), new LiteralExpression("world") };

      RedirectExpression exp = new RedirectExpression(expressions);
      String result = exp.getValue(new EvaluationContext());
      assertEquals("hello", result);
   }