class FormLevelRecognitionEventStrategy extends AbstractEventStrategy implements EventStrategyPrototype {

    @Override
    public void process(final JVoiceXMLEvent event) throws JVoiceXMLEvent {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("processing event " + event + "...");
        }
        final RecognitionEvent recognitionEvent = (RecognitionEvent) event;
        final RecognitionResult result = recognitionEvent
                .getRecognitionResult();
        final VoiceXmlInterpreterContext context =
                getVoiceXmlInterpreterContext();
        final DataModel model = context.getDataModel();
        setApplicationLastResult(result);
        final Collection<InputItem> filtered = filterEvent(model, result);
        if ((filtered == null) || filtered.isEmpty()) {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("no matching form items: processing aborted");
            }
            return;
        }
        setFilledInputItems(result, filtered);
        setInitialFormItems();

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("executing filled elements...");
        }
        final Collection<Filled> filledElements = dialog.getFilledElements();
        final FormInterpretationAlgorithm fia =
                getFormInterpretationAlgorithm();
        final VoiceXmlInterpreter interpreter = getVoiceXmlInterpreter();
        final TagStrategyExecutor executor = getTagStrategyExecutor();
        for (Filled filled : filledElements) {
            if (shouldExecute(filled, model)) {
                executor.executeChildNodes(context, interpreter, fia, null,
                        filled);
            }
        }
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("...done executing filled element");
        }
    }

      FormLevelRecognitionEventStrategy();
      FormLevelRecognitionEventStrategy(
            final VoiceXmlInterpreterContext ctx,
            final VoiceXmlInterpreter interpreter,
            final FormInterpretationAlgorithm algorithm, final Dialog dlg);

}