code: @Override
  	public Element execute(Context context) {
  
  		assert (ops.length == 2 || ops.length == 3);
  
  		// Pop the condition from the data stack.
  		boolean condition = false;
  		try {
  			condition = ((BooleanProperty) ops[0].execute(context)).getValue();
  		} catch (ClassCastException cce) {
  			throw new EvaluationException(MessageUtils
  					.format(MSG_INVALID_IF_ELSE_TEST), sourceRange);
  		}
  
  		// Choose the correct operation and execute it.
  		Operation op = null;
  		if (condition) {
  			op = ops[1];
  		} else if (ops.length > 2) {
  			op = ops[2];
  		} else {
  			op = Undef.VALUE;
  		}
  		return op.execute(context);
  	}
docs: Perform the if statement. It will pop a boolean from the data stack. If
  that boolean is false the next operand if popped from the operand stack;
  if true, nothing is done.