if ("Field.duration".equals(id) && (object instanceof GroupNodeImpl)) {
Document document = nodeModel.getDocument();
if (document == null || !(document instanceof Project))
return null;
WorkingCalendar wc = (WorkingCalendar) ((Project) document).getWorkCalendar();
// startDate, endDate calculated twice. Can find better
Field startField = FieldDictionary.getInstance().getFieldFromId("Field.start");
Field endField = FieldDictionary.getInstance().getFieldFromId("Field.finish");
Date start = (Date) getSummarizedValueForField(startField, node, nodeModel, context);
Date end = (Date) getSummarizedValueForField(endField, node, nodeModel, context);
double t = wc.compare(end.getTime(), start.getTime(), false);
result = new Duration(Duration.getInstance(t / CalendarOption.getInstance().getMillisPerDay(), TimeUnit.DAYS));
// TODO 8 IS A HACK REPLACE ALL THIS SECTION
} else {
if (nodeHasNonSummarizedValue(node, nodeModel)) {// if no summary
// or leaf