code: @SuppressWarnings("unchecked")
      @Override
      public void configurationChanged(final ConfigurationEvent event) {
  
          if (pauseListener){
              return;
          }
  
          // Grab the event information. Some values may be null.
          final Object source = event.getSource();
          final String name = event.getPropertyName();
          final Object value = event.getPropertyValue();
          final boolean beforeUpdate = event.isBeforeUpdate();
  
  
          // Handle the different types.
          switch (event.getType()) {
  
          // Key identifies node where the Collection of nodes was added, or
          // null if it was at the root.
          case HierarchicalConfiguration.EVENT_ADD_NODES:
          case ConcurrentCompositeConfiguration.EVENT_CONFIGURATION_SOURCE_CHANGED:    
              expandedListener.configSourceLoaded(source);
              break;
  
          // Key identifies the individual property that was added.
          case AbstractConfiguration.EVENT_ADD_PROPERTY:
              expandedListener.addProperty(source, name, value, beforeUpdate);
              break;
  
          // Entire configuration was cleared.
          case AbstractConfiguration.EVENT_CLEAR:
              expandedListener.clear(source, beforeUpdate);
              break;
  
          // Key identifies the single property that was cleared.
          case AbstractConfiguration.EVENT_CLEAR_PROPERTY:
              expandedListener.clearProperty(source, name, value, beforeUpdate);
              break;
  
          // Key identifies the nodes that were removed, along with all its
          // children. Value after update is the List of nodes that were
          // cleared. Before the update, the value is null.
          case HierarchicalConfiguration.EVENT_CLEAR_TREE:
              // Ignore this. We rewrote the clearTree() method below.
              break;
  
          // The current property set is invalid.
          case CombinedConfiguration.EVENT_COMBINED_INVALIDATE:
              //listener.configSourceLoaded(source);
              break;
  
          // Key identifies the property that was read.
          case AbstractConfiguration.EVENT_READ_PROPERTY:
              break;
  
          // Key identifies the property that was set.
          case AbstractConfiguration.EVENT_SET_PROPERTY:
              expandedListener.setProperty(source, name, value, beforeUpdate);
              break;
              
          default:
              break;
          }
      }
docs: {@inheritDoc}
  @see ConfigurationListener#configurationChanged(ConfigurationEvent)