public void initExecutor(ExpressionExecutor[] attributeExpressionExecutors,
                             ProcessingMode processingMode, ConfigReader configReader,
                             boolean groupBy, SiddhiQueryContext siddhiQueryContext) {
        this.processingMode = processingMode;
        this.configReader = configReader;
        this.siddhiQueryContext = siddhiQueryContext;
        try {
            this.attributeExpressionExecutors = attributeExpressionExecutors;
            attributeSize = attributeExpressionExecutors.length;
            InputParameterValidator.validateExpressionExecutors(this, attributeExpressionExecutors);
            StateFactory<S> stateFactory = init(attributeExpressionExecutors, configReader, this.siddhiQueryContext);
            stateHolder = this.siddhiQueryContext.generateStateHolder(this.getClass().getName(), groupBy, stateFactory);
        } catch (Throwable t) {
            throw new SiddhiAppCreationException(t.getMessage(), t);
        }
    }
Parent abstract class for Function Executors. Function executor will have one or more input parameters and single
return value.

@param <S> current state for the Function Executor
modules/siddhi-core/src/main/java/io/siddhi/core/executor/function/FunctionExecutor.java