class PromptChooser {

    public Collection<VoiceXmlNode> collect() throws SemanticError {
        final int count = countable.getPromptCount();
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("find all prompts of '" + countable.getName()
                    + "' with count " + count);
        }
        final Collection<VoiceXmlNode> allPrompts = findAllPrompts();
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("found " + allPrompts.size() + " prompt(s) in '"
                    + countable.getName() + "'");
        }
        final Collection<VoiceXmlNode> condPrompts = filterCond(allPrompts);
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("found " + condPrompts.size()
                    + " prompt(s) after cond evaluation in '"
                    + countable.getName() + "'");
        }
        final int highestCount = findHighestCount(condPrompts, count);
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("highest count of " + countable.getName() + "' is "
                    + highestCount + " <= " + count);
        }
        final Collection<VoiceXmlNode> correctCountPrompts = filterCount(
                condPrompts, highestCount);
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("found " + correctCountPrompts.size()
                    + " prompt(s) with count " + highestCount + " in '"
                    + countable.getName() + "'");
        }

        return correctCountPrompts;
    }

      PromptChooser(final PromptCountable cnt,
            final VoiceXmlInterpreterContext ctx);

}