@Override
 public CalendarModelConfiguration cloneWithNewOptions(Map<String, String> newMap) {
   CalendarModelConfigurationImpl clone = (CalendarModelConfigurationImpl) deepClone();
   clone.optionMap = Collections.unmodifiableMap(newMap);
   return clone;
 }
 private static void copy(
     CalendarModelConfigurationImpl source, CalendarModelConfigurationImpl dest) {
   dest.view = source.view;
   dest.defaultEventTypes = source.defaultEventTypes;
   dest.defaultResourceTypes = source.defaultResourceTypes;
   dest.title = source.title;
   dest.startDate = source.startDate;
   dest.endDate = source.endDate;
   dest.selectedDate = source.selectedDate;
   dest.resourceRootSelected = source.resourceRootSelected;
   dest.setResolver(source.resolver);
   List<ClassificationFilterImpl> newFilter = new ArrayList<ClassificationFilterImpl>();
   for (ClassificationFilterImpl f : source.classificationFilters) {
     ClassificationFilterImpl clone = f.clone();
     newFilter.add(clone);
   }
   dest.setClassificationFilter(newFilter);
   dest.selected = new ArrayList<String>(source.selected);
   dest.typeList = new ArrayList<String>(source.typeList);
   LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();
   optionMap.putAll(source.optionMap);
   dest.optionMap = Collections.unmodifiableMap(optionMap);
 }