class GeneratedOperationsModifier implements OperationConductorModifier {

    @Override
    public void modify(ExecutorContext executorContext, OperationWrapper operationWrapper, OperationConductor operationConductor)
    {
        // no need to eval if this is not a generator
        if(!isOperationGenerator(operationWrapper.getOperation()))
            return;

        OperationGeneratorOutputDefinition outputDefinition = retrieveOutputDefinition(operationWrapper.getOperation());

        if(outputDefinition.getLogOnly() != null && outputDefinition.getLogOnly())
        {
            logger.info("Skipping operation injection (by request).");
            return;
        }

        GeneratedOperationData generatedOperationData = retrieveGeneratedOperationData(operationWrapper, outputDefinition);

        List<Operation> generatedOperations = generatedOperationData.getOperations();
        if(generatedOperations == null || generatedOperations.size() == 0)
        {
            logger.warn("No operations were generated by operation: %1$s", operationWrapper.getOperation().getName());
            return;
        }

        generatedOperations.forEach(op ->
        {
            OperationWrapper opWrapper = operationWrapperFactory.create(op);
            opWrapper.init(executorContext, operationConductor.getJsonContextUpdater());
            operationConductor.getPendingOperations().add(opWrapper);
        });
        executorContext.getAgendaProgressReporter().adjustOperationTotalCount(generatedOperations.size());
    }

    public  GeneratedOperationsModifier(ExecutorContext executorContext);

}