class AbstractFormItem implements FormItem, FormItemLocalExecutableTagContainer {

    @Override
    public boolean isSelectable() throws SemanticError {
        final Object result = getFormItemVariable();
        final boolean cond = evaluateCondition();
        final DataModel model = context.getDataModel();
        final boolean selectable = ((result == model.getUndefinedValue()) 
                || (result == null)) && cond;

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("checking if '" + name +"' is selectable");
            final String logResult = model.toString(result);
            LOGGER.debug("value of   '" + name + "': '" + logResult + "'");
            LOGGER.debug("cond of    '" + name + "': '" + cond + "'");
            LOGGER.debug("selectable '" + name + "': " + selectable);
        }

        return selectable;
    }

      AbstractFormItem();
      AbstractFormItem(final VoiceXmlInterpreterContext ctx,
            final VoiceXmlNode voiceNode);

}