public Object calculate(Form form, Widget parent, Datatype datatype) {
        try {
            Object result = null;
            if (initialResult != null) {
                result = initialResult.evaluate(new ExpressionContextImpl(parent, true));
            }
            WidgetFinder finder = new WidgetFinder(parent, this.repeatOn, false);
            Collection widgets = finder.getWidgets();            
            for (Iterator iter = widgets.iterator(); iter.hasNext();) {
                Widget widget = (Widget) iter.next();