protected void save() {
        
        ImageSettings imageSettings = null;
        IndexerState indexerState = null;
        WindowSettings windowSettings = null;
        for (SaveSubscriber s : subscribers) {
            if (imageSettings == null) {
                imageSettings = s.saveImageSettings();
            }
            if (indexerState == null) {
                indexerState = s.saveIndexerState();
            }
            else {
                indexerState.combine(s.saveIndexerState());
            }
            if (windowSettings == null) {
                windowSettings = s.saveWindowSettings();
            }
            else {
                windowSettings.combine(s.saveWindowSettings());
            }
        }
        if (imageSettings == null) {
            indexerState = null;
        }
        this.saveImageSettings(imageSettings);
        this.saveIndexerState(indexerState);
        this.saveWindowSettings(windowSettings);
        
    }